Data centers provide computing resources for many types of organizations, including enterprises and various Internet-related service providers, such as storage service providers, hosting service providers and application service providers. A typical data center contains anywhere from hundreds to many thousands of computers, performing a variety of roles for a variety of purposes.
Managing a large number of computers can be costly, time consuming, and error-prone. For example, many service providers find that running a data center is a labor-intensive business, as many routine processes are performed manually. By way of example, bringing a new server online for a new customer consists of having an engineer print-out the new customer's order, install an operating system, install any applications, configure the operating system and applications, and move the server machine into the data center to attach to the network and to a power source. Bringing a new server online is thus a lengthy and expensive process, and prone to error.
Similar manual processes are used when an existing server configuration is to be “reprovisioned” for a new customer via software. In fact, the cost of reprovisioning is so great that some service providers find it cheaper to not do so. Part of the expense it that such unused systems can normally only be located via an expensive manual audit of the data center. Similarly, rather than redeploying a computer that is no longer needed, it may be cheaper leave the server computer in the data center (running and consuming power), or completely disassemble the computer, rather than attempt redeployment.
In sum, running a data center requires making a number of compromises that are necessary for practical purposes but are not very desirable. For example, instead of redeploying computers, it may be cheaper not to, but this means that data centers have computer systems up and running (using power, air conditioning and network ports) even when they are no longer required for service.
As another example, although expensive, manually configuring various servers is still the way in which data centers operate. However, reducing such costs through automation is a significant undertaking that has heretofore not been very successful, as among other difficulties, such an attempt requires integration with multiple external products.